"""
支出模型
"""

from app.db import db  # 从独立的 db 模块导入


class Income(db.Model):
    # 定义表名
    __tablename__ = 'income'
    # 定义字段
    id = db.Column(db.Integer, primary_key=True)
    # 外键
    user_id = db.Column(db.Integer, db.ForeignKey('user_info.id'))
    first_cate_id = db.Column(db.Integer, db.ForeignKey('income_first_cate.id'), comment='收入一级分类')
    second_cate_id = db.Column(db.Integer, db.ForeignKey('income_second_cate.id'), comment='收入二级分类')
    # 收入金额
    amount = db.Column(db.Float)
    # 收入日期
    date = db.Column(db.Date)
    # 备注
    remark = db.Column(db.String(255))

    def to_dict(self):
        """将模型实例转换为字典，方便后续处理（如转换为DataFrame或JSON）"""
        base_dict = {c.name: getattr(self, c.name, None) for c in self.__table__.columns}
        # 单独处理日期字段：格式化 charger_date 为 年月日
        if base_dict.get('date'):
            # 格式1：2025-09-01（推荐，符合ISO标准，前端易处理）
            base_dict['date'] = base_dict['date'].strftime('%Y-%m-%d')
        return base_dict
